'''
方法的第一个参数必须是self，代表当前对象
普通方法：通过对象去调用
特殊方法：类方法和静态方法
    类方法和静态方法:通过类名调用，不通过创建对象，使用对象调用
类方法：在方法上面定义一个装饰器，@classmethod
    第一个参数是cls,cls是类方法创建的对象，该对象可以去调用类中定义的属性
静态方法:在方法上面定义一个装饰器，@staitcmethod

**类方法和静态方法的区别：
    1）装饰器不同（定义方式不同）
    2）类方法的第一个参数必须是cls
    3）类方法可以通过cls访问类属性,但是静态方法不能访问属性
'''
class Teacher:
    school="新启典"

    def __init__(self,name,age):
        self.name=name
        self.age=age



    def teach(self,name):
        print(f"{self.name}老师教学生{name},所在的学校{Teacher.school}")

    @classmethod
    def dianming(cls,num):
        # print(f"进行了点名,人数为{num}")
        print(f"进行了点名,人数为{num}，{cls.school}")
        # cls.eat(cls)

    @staticmethod
    def shou():
        print("收手机")

    def eat(self):
        print(f"------eat-----")

lucy = Teacher("lucy",35)
lucy.teach("张三")

lily= Teacher("lily",28)
lily.teach("张三")

"""
类方法：
    对象名.类方法（）    不推荐
    类名.类方法（）
"""
lily.dianming(34)
Teacher.dianming(56)

lily.shou()
Teacher.shou()

